package org.example.deepseekproject_back.exception;

/**
 * TODO:抛出异常
 * @author Lenovo
 * 异常处理工具类
 * 这是一个工具类，它的核心作用是封装异常抛出的逻辑，让代码更简洁、更统一。它本身不处理异常，而是“制造”并“抛出”异常。
 * // 使用前：代码冗长
 *     User user = userMapper.selectById(id);
 *     if (user == null) {
 *         throw new BusinessException(ErrorCode.NOT_FOUND_ERROR, "用户不存在");
 *     }
 *
 *     // 使用ThrowUtils后：一行搞定，清晰简洁
 *     User user = userMapper.selectById(id);
 *     ThrowUtils.throwIf(user == null, ErrorCode.NOT_FOUND_ERROR, "用户不存在");
 */
public class ThrowUtils {
    /**
     *     boolean condition接收手动传入的条件
     *     条件满足立刻抛出异常
     */
    public static void throwIf(boolean condition, RuntimeException runtimeException) {
        //如果条件满足则抛出异常
        if (condition) {
            throw runtimeException;
        }
    }

    /**
     *
     * @param condition 条件
     * @param errorCode 错误码
     */
    public static void throwIf(boolean condition, ErrorCode errorCode) {
       throwIf(condition, new BusinessException(errorCode));
    }
    /**
     *
     * @param condition 条件
     * @param errorCode 错误码
     * @param message 错误信息
     * TODO: 使用方式：ThrowUtils.throwIf(true,ErrorCode.OPERATION_ERROR,"操作失败");
     */
    public static void throwIf(boolean condition, ErrorCode errorCode,String message) {
        throwIf(condition, new BusinessException(errorCode, message));

    }


}
